package com.jichangxiu.common.constant;

/**
 * RedisKeys:
 *
 * @author Jcx
 * @create 2023-04-03 21:49
 */
public class RedisKeys {

    /**
     * 创建编号 Redis Key
     *
     * @param type 类型
     * @param time 时间
     * @return Redis Key
     */
    public static String createNo(String type, String time) {
        return "JCX_BOOT:REDIS_NO:" + type.toUpperCase() + "_NO:" + time + ":";
    }

    /**
     * 登录验证码的 Redis Key
     *
     * @param key 关键字
     * @return Redis Key
     */
    public static String createCodeToCaptcha(String key) {
        return "JCX_BOOT:REDIS_CODE:CAPTCHA_CODE:" + key.toUpperCase() + ":";
    }

    /**
     * 限流 Redis Key
     *
     * @param key 关键字
     * @return Redis Key
     */
    public static String createCodeToRateLimit(String key) {
        return "JCX_BOOT:REDIS_CODE:RATE_LIMIT:" + key.toUpperCase() + ":";
    }

    /**
     * 防止重复请求 Redis Key
     *
     * @param key 关键字
     * @return Redis Key
     */
    public static String createCodeToRequestRepeat(String key) {
        return "JCX_BOOT:REDIS_CODE:REQUEST_REPEAT:" + key.toUpperCase() + ":";
    }

    /**
     * 登录存放 JWT 载荷的 Redis Key
     *
     * @param key 关键字
     * @return Redis Key
     */
    public static String createLoginToJwtToken(String key) {
        return "JCX_BOOT:REDIS_LOGIN:JWT_TOKEN:" + key.toUpperCase() + ":";
    }

    /**
     * 登录存放保证用户唯一登录特性
     *
     * @param key 关键字
     * @return 全 Key
     */
    public static String createLoginToOnlineUser(String key) {
        return "JCX_BOOT:REDIS_LOGIN:ONLINE_USER:" + key.toUpperCase() + ":";
    }

}
